home *** CD-ROM | disk | FTP | other *** search
/ Floppyshop 2 / Floppyshop - 2.zip / Floppyshop - 2.iso / art&graf.ix / art-0039 / source / m2conv.mod < prev    next >
Text File  |  1997-04-16  |  3KB  |  132 lines

  1. IMPLEMENTATION MODULE M2Conv;
  2.  
  3. (* based on the SmallIO module from HiSoft FLT Compiler     LGM *)
  4.  
  5. IMPORT Conversions; 
  6.  
  7. FROM Strings     IMPORT Delete;
  8.  
  9. CONST    MaxDepth=3;
  10. VAR    i:INTEGER;
  11.     ch:CHAR;
  12.  
  13.  
  14. PROCEDURE SkipBlanks( VAR s : ARRAY OF CHAR );
  15.   VAR i, len : INTEGER;
  16.   BEGIN
  17.     i := 0;
  18.     len := SHORT(HIGH(s));
  19.     WHILE ( i <= len ) 
  20.      AND  ( s[i] <= ' ' ) DO
  21.          INC(i);
  22.     END;
  23.     IF i > len THEN i := len ; END;
  24.     Delete(s,0,i);
  25.   END SkipBlanks;
  26.  
  27.  
  28. PROCEDURE Output(Text:ARRAY OF CHAR;used:INTEGER;places:CARDINAL; fill : CHAR;
  29.          VAR OutStr : ARRAY OF CHAR; );
  30.   VAR j : INTEGER;
  31.   BEGIN
  32.       FOR j := 0 TO SHORT(HIGH(OutStr)) DO OutStr[j] := 0C; END;
  33.       j := 0;
  34.       FOR i:=used+1 TO INTEGER(places) DO 
  35.         OutStr[j] := fill;
  36.         INC(j); 
  37.       END;
  38.       FOR i:=SHORT(LONGINT(HIGH(Text)))+1-used TO SHORT(LONGINT(HIGH(Text))) DO
  39.         OutStr[j] := Text[i]; 
  40.         INC(j);
  41.       END;
  42.   END Output;
  43.  
  44.  
  45. PROCEDURE ConvToLongcard( s : ARRAY OF CHAR;) : LONGCARD;
  46. VAR i, len  :INTEGER;
  47.     c       : LONGCARD;
  48. BEGIN
  49.         len := SHORT(HIGH(s));
  50.         i := 0;
  51.     c:=0;
  52.     SkipBlanks(s);
  53.         i := 0;
  54.     WHILE (s[i]>='0') AND (s[i]<='9') AND (i <= len ) DO
  55.         c:=10*c+(ORD(s[i])-ORD('0'));
  56.         INC(i);
  57.         END;(*WHILE*)
  58.         RETURN c;
  59.     END ConvToLongcard;
  60.  
  61. PROCEDURE ConvToCard( s : ARRAY OF CHAR ) : CARDINAL;
  62.   VAR lc : LONGCARD;
  63.   BEGIN
  64.     lc := ConvToLongcard(s);
  65.     RETURN SHORT(lc);
  66.   END ConvToCard;
  67.  
  68.  
  69. PROCEDURE ConvToInt( s : ARRAY OF CHAR ) : INTEGER;
  70.   VAR li : LONGINT;
  71.   BEGIN
  72.     li := ConvToLongint(s);
  73.     RETURN SHORT(li);
  74.   END ConvToInt;
  75.  
  76.  
  77. PROCEDURE ConvToLongint( s : ARRAY OF CHAR; ) : LONGINT;
  78. VAR    neg:BOOLEAN;
  79.         i  :INTEGER;
  80.         x  :LONGINT;
  81. BEGIN
  82.     SkipBlanks(s);
  83.     neg:=FALSE;
  84.         i := 0;
  85.     IF s[i]='-' THEN neg:=TRUE; END;
  86.     IF (s[i]='-') OR (s[i]='+') THEN INC(i) END;
  87.     x:=0;
  88.     WHILE (s[i]>='0') AND (s[i]<='9') DO
  89.         x:=10*x+(ORD(s[i])-ORD('0'));
  90.         INC(i);
  91.         END;(*WHILE*)
  92.     IF neg THEN x:=-x END;
  93.         RETURN x;
  94.     END ConvToLongint;
  95.  
  96. PROCEDURE WriteCardInGivenBase(c:LONGCARD;base:CARDINAL;places:CARDINAL;
  97.     zerosuppress:BOOLEAN; VAR s : ARRAY OF CHAR);
  98. VAR    
  99.     used:INTEGER;
  100.         ch : CHAR;
  101. BEGIN    
  102.     Conversions.CardToString(c,base,s,used);
  103.     IF zerosuppress THEN ch:=' '
  104.     ELSE ch:='0' END;
  105.     Output(s,used,places,ch,s);
  106.     END WriteCardInGivenBase;
  107.  
  108. PROCEDURE CardToString(c:LONGCARD;places:CARDINAL; VAR s:ARRAY OF CHAR);
  109. BEGIN
  110.     WriteCardInGivenBase(c,10,places,TRUE,s)
  111.     END CardToString;
  112.  
  113. PROCEDURE CardToHexString(c:LONGCARD;places:CARDINAL; VAR s:ARRAY OF CHAR);
  114. BEGIN
  115.     WriteCardInGivenBase(c,16,places,FALSE,s)
  116.     END CardToHexString;
  117.  
  118. PROCEDURE CardToOctString(c:LONGCARD;places:CARDINAL; VAR s : ARRAY OF CHAR);
  119. BEGIN
  120.     WriteCardInGivenBase(c,8,places,FALSE,s)
  121.     END CardToOctString;
  122.  
  123. PROCEDURE IntToString(c:LONGINT;places:CARDINAL;VAR s:ARRAY OF CHAR);
  124. VAR    
  125.     used:INTEGER;
  126. BEGIN    
  127.     Conversions.IntToString(c,10,s,used);
  128.     Output(s,used,places,' ',s);
  129.     END IntToString;
  130.  
  131.     END M2Conv.
  132.